package com.chuangsi.common.utils;


import com.chuangsi.framework.config.ChuangSiConfig;
import com.chuangsi.project.admin.domain.Seal;
import org.springframework.core.io.Resource;
import com.aspose.words.*;
import com.chuangsi.common.exception.ServiceException;
import com.chuangsi.project.admin.dto.common.SealPositionDto;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.*;
import com.itextpdf.text.pdf.parser.*;
import com.itextpdf.tool.xml.XMLWorkerHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.springframework.http.MediaType;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;


import java.io.*;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.ArrayList;





import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * @author wangshengming
 * @date 2023/4/4
 */
@Slf4j
public class PdfUtil {

    /**
     * 模拟从数据库读取的数据
     */
//    private static final String CONTENT = "<p style=\"text-align: left;\"><strong>创思助手服务协议</strong></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\"><br></span></p><p><u>更新日期：2023年3月15日</u></p><p><u>生效日期：2023年3月15日</u></p><p><u> </u></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">本协议</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255); font-family: 宋体;\">是创思助手</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">与您，就您使用</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">服务的相关事项签订的协议。</span></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><strong>为使用创思助手服务，您应当充分阅读、理解本协议，其中限制、免责条款或其他涉及您重大权益的条款会以加粗、加下划线等形式提示您重点注意。为保障服务的连续性，您同意创思助手随时对本协议内容进行单方面的变更，不单独通知您。您可以查阅本协议及其历史版本。若您在本协议内容公布变更后继续使用创思助手服务的，表示您已充分阅读、理解并接受本协议变更后的内容，也将遵循变更后的协议内容使用创思助手服务；若您不同意变更后的协议内容，您应自行停止使用创思助手服务。</strong></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102);\">您</span><strong>应确保已充分阅读、理解并同意接受和遵守本协议，否则，请您不要使用创思助手服务。您通过网页确认或以其他任何方式明示或者默示表示接受本协议，或您以任何方式使用创思助手服务的，即视为您已阅读并同意接受本协议的约束，本协议即在您与创思助手之间产生法律效力。</strong></p><p><strong> </strong></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">与您通过本协议就以下事项进行约定：</span></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">一、名词解释</span></p><p><strong>二、创思助手服务（含数字证书服务）</strong></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">三、服务费用</span></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">四、用户账号及使用</span></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">五、知识产权</span><span style=\"color: rgb(96, 98, 102);\"><br></span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">六、违约责任及责任限制</span></p><p><span style=\"color: rgb(96, 98, 102);\">七、其他</span></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102);\">一、名词解释</span></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102);\">1.1 </span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span></p><p><span style=\"color: rgb(96, 98, 102);\">指“</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">重庆创思汽车服务有限公司</span><span style=\"color: rgb(96, 98, 102);\">”，系</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">平台的经营者及</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">服务的提供者。</span></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102);\">1.</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">2</span><span style=\"color: rgb(96, 98, 102);\"> </span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">服务</span></p><p><span style=\"color: rgb(96, 98, 102);\">指</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思</span><span style=\"color: rgb(96, 98, 102);\">以网站、应用程序、开放接口或其他形式提供的电子签名、身份认证（含数字证书注册审核）、合同签署、合同管理、存证出证等各种产品及服务（具体以</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思</span><span style=\"color: rgb(96, 98, 102);\">实际提供的为准）。</span></p><p><span style=\"color: rgb(96, 98, 102);\">1.</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">3</span><span style=\"color: rgb(96, 98, 102);\"> 电子签名<br>数据电文中以电子形式所含、所附用于识别签名人身份并表明签名人认可其中内容的数据。可靠的电子签名应当符合《电子签名法》第十三条的规定。可靠的电子签名与手写签名或盖章具有同等法律效力。</span></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">1.</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255); font-family: 宋体;\">4 </span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">数字签名技术</span></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">一种电子签名技术，是非对称密钥算法的一种具体应用。数字签名是附加在数据单元上的一些数据，或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据，防止被伪造。非对称密钥分为私钥和公钥。私钥是经由数学运算产生的密钥，用于制作数字签名，</span><strong>私钥由持有人保管或控制</strong><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">；公钥是经由数学运算产生的密钥，可公开取得、并可用于验证由其对应的私钥所产生的数字签名。</span></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102);\">1.</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">5</span><span style=\"color: rgb(96, 98, 102);\"> 数字证书</span></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">即电子签名认证证书，是电子认证服务机构颁发的，包含电子认证服务提供者名称、证书持有人名称、证书序列号、证书有效期、证书持有人的电子签名验证数据、电子认证服务提供者的电子签名等信息的电子文件。本协议中的“数字证书”指个人数字证书和企业（含其他组织）数字证书，形式包含UKEY证书和云证书。</span><strong>UKEY证书的私钥由持有人保管；云证书的私钥由持有人控制，安全加密后由创思助手存储并根据持有人的意愿调用。</strong></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102);\">1.</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">6</span><span style=\"color: rgb(96, 98, 102);\"> 可信时间戳<br>指由国家授时中心提供时间源，电子认证服务提供者建设的时间戳服务。</span></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102);\">1.</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">7</span><span style=\"color: rgb(96, 98, 102);\"> 电子认证服务机构<br>指符合《电子签名法》规定，依法设立的</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">电子认证服务提供者，简称CA机构</span><span style=\"color: rgb(96, 98, 102);\">。电子认证服务机构按照《电子认证服务管理办法》制定电子认证业务规则</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">，授权注册机构提供注册审核服务，并向工业和信息化部备案。</span></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">1.</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255); font-family: 宋体;\">8</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\"> 注册机构</span></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">指为最终证书申请者建立注册过程的实体，简称RA机构。注册机构对证书申请者进行身份标识和鉴别，发起或传递证书吊销请求，代表电子认证服务机构批准更新证书或更新密钥的申请。本协议中注册机构指</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">。</span></p><p><span style=\"color: rgb(96, 98, 102);\"><br>1.</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">9</span><span style=\"color: rgb(96, 98, 102);\"> 电子签章<br></span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">电子签章图形数据及对应数字证书的组合，具有数字化存储、拥有唯一标识、基于数字签名技术保护等基本特征。</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">提供的电子签章图形分为模板章、自定义图章及第三方授权电子签章。模板章指</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255); font-family: 宋体;\">创思</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">根据数字证书持有人姓名/名称生成的电子签章图形；自定义图章指由您或具有相应权限的其他主体上传的，</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">审核通过后可供使用的签章图形，第三方授权电子签章指您通过授权从其他平台共享至</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">的签章图形。</span></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">1.1</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255); font-family: 宋体;\">0</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\"> 手绘签名</span></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">签名图形数据及对应数字证书的组合，具有数字化存储、拥有唯一标识、基于数字签名技术保护等基本特征。</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">提供的签名图形分为手绘签名图形和AI手绘签名图形。手绘签名图形指用户通过在传输介质上手绘形成的图形；AI手绘签名图形指用户通过在传输介质上手绘形成的通过了AI识别的图形。</span></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102);\">二、</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">服务</span></p><p><span style=\"color: rgb(96, 98, 102);\">2.1 电子签名服务<br>您可以通过</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">服务制作并使用专属于您的电子签名。使用电子签名服务需要您成为</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">的用户，选择适合您的身份认证方式进行数字证书的申请，制作您的电子签章或手绘签名，根据您的意愿完成电子文件的签署。</span></p><p><span style=\"color: rgb(96, 98, 102);\">2.2 认证服务（含数字证书注册审核服务）</span></p><p><span style=\"color: rgb(96, 98, 102);\">2.2.1 您可以通过</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">服务进行身份认证。您可以通过</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">服务进行个人和企业（含其他组织）的身份认证。</span><strong>如您代表企业（含其他组织）进行身份认证，应当确保您已经获得被代表的企业（含其他组织）的合法授权，并确保其接受本协议的约束。</strong></p><p><span style=\"color: rgb(96, 98, 102);\">2.2.2 </span><strong>创思助手提供认证服务需要处理您的个人信息，您同意创思助手按照《隐私政策》处理您的个人信息，否则创思助手无法向您提供认证服务。个人信息处理规则详见创思助手《隐私政策》。</strong></p><p><span style=\"color: rgb(96, 98, 102);\">2.2.3</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">提供的认证服务包含实名认证和意愿认证。</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">实名认证指通过信息核验、人脸比对、对公账户打款、校验码回填或人工审核等方式确认您身份的真实性，并反馈认证结果的</span><span style=\"color: rgb(96, 98, 102);\">服务。</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">意愿认证指通过信息核验、人脸比对、录音录像、校验码回填、面容/指纹认证或密码输入等方式确认您的签署意愿，反馈认证结果的</span><span style=\"color: rgb(96, 98, 102);\">服务。</span></p><p><span style=\"color: rgb(96, 98, 102);\">2.2.4 认证结果包括您是否通过身份认证，以及您提供的用来进行身份认证的个人信息、企业或其他组织信息，提供信息的具体范围根据您使用的认证方式确定。</span></p><p><span style=\"color: rgb(96, 98, 102);\">2.2.5 为准确核验您的身份，您授权</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">在必要时将您的身份认证信息提供给合法存有您信息的第三方机构进行比对核验。</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">会尽力提升核验结果的准确性，但由于</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">能收集到的信息范围有限，以及行业技术水平及核验手段仍在完善过程中，</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">无法确保核验结果完全准确无误。如您发现核验结果不准确，您可通过客服电话400-</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">900</span><span style=\"color: rgb(96, 98, 102);\">-</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">7937</span><span style=\"color: rgb(96, 98, 102);\">联系</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">进行更正。</span></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">2.2.6 </span><strong>您认可创思助手通过认证服务所提供的认证方式对您的身份进行认证，您应当妥善保存能够对您身份进行认证的信息、材料以及设备。如相关信息、材料或设备发生泄露、遗失等失去您控制的情形，您应当及时通知创思助手，否则创思助手有权利认定相应认证行为由您完成。</strong></p><p><span style=\"color: rgb(96, 98, 102);\">2.2.7 </span><strong>可靠的电子签名需要确保电子签名制作数据由您专有和控制，因此身份认证是您使用电子签名的前提。如您不通过身份认证，创思助手将无法向您提供电子签名服务。</strong></p><p><span style=\"color: rgb(96, 98, 102);\">2.2.8 </span><strong>如您需要使用接受创思助手服务的其他平台的产品或服务，您授权创思助手直接从您处或该平台获取您提供的认证信息进行身份认证。同时，您授权创思助手将您的认证结果反馈给该平台以便您能够继续使用该平台的产品或服务。</strong></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><strong>2.3 数字证书服务</strong></p><p><span style=\"color: rgb(96, 98, 102);\">2.3.1 </span><strong>数字证书服务指创思助手作为注册机构，为履行电子认证业务规则中注册机构的义务所提供的服务。创思助手通过认证服务完成对您申请数字证书时身份信息的审核，并根据审核通过的真实身份信息为您向电子认证服务机构（即CA机构）申请并向您颁发数字证书。申请数字证书时您将通过创思助手与相应的CA机构订立《数字证书服务协议》，勾选即代表您同意与该CA机构签订该协议。如您使用云证书，则数字证书服务还包含创思助手经过您的授权，在您的控制下为您调用数字证书，帮助您使用数字证书的服务。如您使用云证书，数字证书的私钥安全加密存储于创思助手。</strong></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">2.3.2 数字证书至少包含：电子认证服务提供者名称；证书持有人名称；证书序列号；证书有效期；证书持有人的电子签名验证数据；电子认证服务提供者的电子签名；国务院信息产业主管部门规定的其他内容。</span></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">2.3.3 </span><strong>申请数字证书。您使用数字证书前，需要向创思助手提出数字证书申请。您勾选本协议或接受创思助手服务时，即作出了您申请数字证书的意思表示（不含仅使用认证服务的情形）。您应当按照本协议的约定如实提供您申请数字证书所需的材料，以供创思助手进行审核。如您代表企业（含其他组织）申请数字证书，应当确保您已经获得被代表的企业（含其他组织）的合法授权，并确保其接受本协议的约束。</strong></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">2.3.4 颁发、更新和变更数字证书。您提交的数字证书申请材料通过</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">的审核后，</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255); font-family: 宋体;\">平台会</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">告知电子认证服务机构为您颁发数字证书。</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255); font-family: 宋体;\">本平台</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">会以一定的方式对您数字证书申请结果进行通知，如：您申请失败则无法继续</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255); font-family: 宋体;\">接受创思助手</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">服务等。</span><strong>您的数字证书有效期通常为申请成功之日起一年，具体期间以数字证书上所载明的有效期为准。数字证书有效期限届满，创思助手将为您自动更新数字证书（UKEY证书的更新及变更均需要您主动操作）。</strong><span style=\"color: rgb(96, 98, 102);\">您的数字证书信息在有效期限内变更的，应当及时书面告知</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">，并终止使用该数字证书。</span></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">2.3.5 数字证书的使用。</span><strong>您通过创思助手平台或接受创思助手服务的其他平台签署电子文件时，需要通过申请和使用数字证书的行为代表您对您的身份和签署意愿进行了确认。您通过创思助手申请的数字证书只能在有效期限内、在创思助手平台或接受创思助手服务的其他平台上使用。您勾选本协议或接受创思助手服务时，即代表您授权创思助手为您保管云证书私钥（UKEY证书用户不适用本授权条款），并在您的专有控制下，根据您的意愿为您调用数字证书，帮助您使用数字证书。您认可前述使用方式，您认可您对数字证书享有独立的使用权。您使用数字证书产生的权利，由您享有；您使用数字证书产生的义务、责任，由您承担。</strong></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">2.3.6 吊销数字证书。吊销数字证书分为主动吊销和被动吊销。主动吊销指由您提出吊销申请，经</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">审核通过后吊销证书的情形；被动吊销指当电子认证服务机构或</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">确认您违反证书使用规定、约定或主体消亡等情况发生时，采取吊销证书的手段以停止对该证书的证明。如</span><span style=\"color: rgb(96, 98, 102);\">您为企业用户，您企业分立、合并、解散、注销、宣告破产或倒闭，或被撤销营业执照等主体资格终止的，应于上述情况发生时的5个工作日内通过书面形式告知</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">申请吊销数字证书，并终止使用该数字证书。</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">如您对数字证书的使用违反法律法规或严重违反本协议约定，</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">有权向电子认证服务机构申请吊销您的数字证书，并要求您承担相应的责任。您的数字证书被吊销的，数字证书的有效期限届满。</span></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">2.3.7 </span><strong>数字证书私钥在有效期内损毁、丢失、泄露或失去您专有控制的，您应当及时申请办理吊销手续，吊销自手续办妥时起生效，吊销生效前发生的损失由您承担。</strong><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">您应在知道或应当知道前述情况发生时及时告知</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255); font-family: 宋体;\">我们</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">，协助完成吊销该证书的事项，并终止使用该证书。</span></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">2.3.8 </span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">将对您的数字证书相关信息进行保存，信息保存期限至少为您的数字证书失效后5年。</span><strong>您的数字证书相关信息属于您的个人信息，其处理规则及您与创思助手的相应权责详见创思助手《隐私政策》。</strong></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">2.3.9 依赖方使用。依赖方指信赖数字证书所证明的基础信息并依此进行业务活动的个人或企业（含其他组织）。依赖方接收到经您签名的电子文件后，可以使用数字证书上的公钥验证签名，以此判断其收到的信息中您的电子签名是否有效。依赖方能够通过接受您的签名信息获取到数字证书中包含的您的个人信息，如您的姓名/名称及证件号码。</span></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">2.3.10 </span><strong>如您对通过创思助手服务申领的数字证书有任何疑问，可通过客服电话400-900-7937联系创思助手进行咨询。</strong></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102);\">2.4 存证及出证服务</span></p><p><span style=\"color: rgb(96, 98, 102);\">2.4.1 您可以根据您的需求对您的业务数据进行存证。</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">提供的存证服务可以将您需要存储的各类电子化数据通过区块链存证技术进行存证，并在您需要时生成相应的证明文件。<br>2.4.2 为了确保通过</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">服务签署的电子文件更具证明力，您授权</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">收集并存储您的签署信息，包括但不限于与签署相关的操作账号的设备信息、网络信息、系统日志、签署人身份信息、签署方式、电子文件等数据。签署信息均实时同步传输至</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">的存证系统进行固化存证，您可以向</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">申请出具电子版或纸质版本的证明文件，证明您签署的电子文件以及签署过程的真实性。<br>2.4.3 您授权</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">将您签署的电子文件哈希值同步传输至与</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">合作的公证处，您可以通过</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">申请出具公证书，</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">出具记录公证员核验需要公证的文件哈希值与公证处专用服务器保存的文件哈希值是否一致的公证书。</span><span style=\"color: rgb(96, 98, 102);\"><br>2.4.4 您授权</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">将您签署的电子文件哈希值同步传输至与</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">合作的司法鉴定机构，您可以通过</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">申请出具司法鉴定意见书，出具待鉴定文件的哈希值与司法鉴定中心专用的鉴证系统记录的文件哈希值是否一致的鉴定意见。</span></p><p><span style=\"color: rgb(96, 98, 102);\">2.5 您可根据自身需求选购所需服务，一旦您勾选确认、签署购买</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">服务的相关协议或支付价款即视为您决定购买</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">的相应服务。双方也可根据实际合作需要，另行签订协议。部分</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">服务的开通需要双方另行签订单独的服务协议，单独的服务协议可能以电子文档形式展示，也可能是独立的纸质文档形式展示。</span></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102);\">三、服务费用</span></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102);\">3.1 在您使用</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">服务时，</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">有权向您收取服务费用。</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">拥有制定及调整服务费用之权利，具体服务费用以您使用</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">服务时本网站产品页面上所列之收费方式公告或您与</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">达成的其他书面协议为准。</span></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102);\">3.2 您应在订单提交后及时按约定完成支付。部分服务或优惠措施可能有时间或条件限制、库存限制或者活动数量等限制，订单提交后，若发生您未及时付款、或付款期间出现数量不足或已达到限量等情况的，您将可能无法使用相关服务或享受相关优惠。</span></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102);\">3.3 如您未在约定期限足额支付服务费用，</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">有权暂停或停止向您提供部分或全部服务。您与</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">其他约定的情形除外。</span></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">四、</span><span style=\"color: rgb(96, 98, 102);\">用户账号及使用</span></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102);\">4.1 </span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">用户</span></p><p><span style=\"color: rgb(96, 98, 102);\">4.1.1 </span><strong>使用创思助手服务需要注册成为创思助手用户。一旦勾选本协议或使用创思助手服务即代表您同意成为创思助手用户。创思助手用户的个人信息处理规则详见创思助手《隐私政策》。</strong></p><p><span style=\"color: rgb(96, 98, 102);\">4.1.2 </span><strong>您应当知悉，创思助手服务的主要业务场景为电子文件签署，如您未满18周岁，应在法定代理人的监护下成为创思助手用户，或由法定代理人为您签署电子文件。如您未经监护人同意使用了创思助手服务，且您的监护人不愿意追认的，您应当立即通知您的监护人通过客服400-900-7937告知我们，要求我们适当处理您的个人信息并协助您妥善处理已经签署的电子文件。</strong></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102);\">4.2</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">账号<br>是</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">向用户提供的唯一识别编号。您通过使用</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">账号接受</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">提供的各项服务并管理您在</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">的信息及数据。您可以使用电子邮箱、手机号码注册，通过校验码回填等方式登录</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">账号。您也可以用手机号绑定第三方平台账号注册</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">账号，并通过第三方平台账号授权登录</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">账号。您还可以为</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">账号设置密码，作为账号登录方式。<br><br>4.3 账号注册</span></p><p><span style=\"color: rgb(96, 98, 102);\">4.3.1 </span><strong>创思助手用户分为个人用户和企业用户（含其他组织），在您同意接受本协议并注册成为创思助手用户时，请确认您已经年满 18周岁，或者您代表合法开展经营活动或其他业务的法人或非法人组织。不具备前述条件的，您应立即终止注册并停止使用本服务。</strong><span style=\"color: rgb(96, 98, 102);\"><br>4.3.2 您应准确真实地填写</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">要求您提供的注册信息，确保联系方式、电子邮件地址的真实性，以便</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">与您进行及时、有效地联系。</span><strong>您声明并保证，您在注册时填写的联系方式为您本人所控制，无论该联系方式是否在您本人名下，均能够体现您本人的意志。</strong><span style=\"color: rgb(96, 98, 102);\"><br>4.3.3</span><strong> 如您代表企业（含其他组织）注册，应当确保您已经获得被代表的企业（含其他组织）的合法授权，并确保其接受本协议的约束。</strong><span style=\"color: rgb(96, 98, 102);\"><br><br></span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">4.4 账号信息管理</span><span style=\"color: rgb(96, 98, 102);\"><br>4.4.1您应按照</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">要求在注册成功后及时更新您真实完整的身份信息及相关资料。因您未及时更新资料导致的一切后果，均应由您自行承担，该后果包括但不限于导致本服务无法提供或提供时发生错误、账号及电子签名制作数据被别人盗用或给您的业务相对方带来损失的等。<br>4.4.2 您应当准确提供并及时更新您的联系方式，以便</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">我们</span><span style=\"color: rgb(96, 98, 102);\">与您进行及时、有效的联系。通过您提供的联系方式无法与您取得联系而导致的您在使用本服务过程中遭受的任何损失由您自行承担。<br>4.4.3 如获得您的授权，</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">将把您签署的电子文件同步传输至被授权第三方平台，您可以在第三方平台上查看到您已签署的电子文件。</span></p><p><span style=\"color: rgb(96, 98, 102);\">4.4.4 如获得您的授权</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">将把您在第三方平台生成的电子签章数据同步传输至</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">平台，您可以自行选择使用</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">的模板章、自定义图章或第三方授权电子签章。<br><br>4.5 账号注销</span></p><p><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">4.5.1 您只能注销您本人注册的账号，并按照</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">规定的流程注销账号。</span><span style=\"color: rgb(96, 98, 102);\"><br>4.5.2 注销是不可恢复的操作，您将无法再使用该账号或通过该账号找回您添加或绑定在该账号上的内容，包括数字证书、手绘签名、电子签章、电子文件和签署记录相关信息，您应自行备份相关信息和数据。操作之前，请确认与该账号相关的所有数据均已妥善处理，因使用该账号所产生的相应权利义务已经终结或已被妥善处理。<br>4.5.3 注销将导致</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">与您约定的双方的权利义务终止，同时还将产生以下后果：<br>A. 该账号的联系人将无法通过该账号联系您；<br>B. 该账号的充值余额将不予退回。</span></p><p><span style=\"color: rgb(96, 98, 102);\"><br>4.6 账号安全及数据存储<br>4.6.1 您应当妥善保管您的</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">登录账号和密码、身份信息、手机验证码等信息，对于因本人原因导致密码泄露、身份信息泄露所致的损失，由您自行承担。您应当妥善保管处于您或应当处于您掌控下的这些产品或设备，对于这些产品或设备遗失所致的任何损失，由您自行承担。<br>4.6.2 基于计算机端、手机端以及使用其他电子设备的用户使用习惯，我们可能在您使用具体产品时设置不同的账号登录模式及采取不同的措施识别您的身份。<br>4.6.3 如您发现有他人冒用或盗用您的</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">登录账号或有任何其他未经合法授权之情形，可能危及到您的</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">账号安全的，应立即以有效方式通知</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">，向</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">申请暂停相关服务。您理解</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">对您的请求采取行动需要合理期限，在此之前，</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">对已执行的指令及所导致的您的损失不承担任何责任。<br>4.6.4 您应确保在持续登录本系统时段结束时，以正确步骤退出登录。</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">不能也不会对因您未能遵守本条约定而发生的任何损失、损毁及其他不利后果负责。<br>4.6.5 您确认，您自行对您的</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">账号负责，只有您本人方可使用该账号。该账号不可转让、不可赠与、不可继承，但账号内的相关资产可被依法继承。在您决定不再使用该账号时，您应将该账号内的可用数据导出或删除，并按</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">规定的流程注销。<br>4.6.6 </span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">不对您在本服务中相关数据的删除或储存失败负责，但是您认可</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">账号的使用记录等均以</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">我们</span><span style=\"color: rgb(96, 98, 102);\">系统记录的数据为准。<br>4.6.7 除另有约定外，</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">有权根据实际情况自行决定单个用户在本服务中数据的最长储存期限，并在服务器上为其分配数据最大存储空间等。您可根据自己的需要自行备份本服务中的相关数据。<br>4.6.8 如果您停止使用本服务、服务被终止或取消，</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">可以从服务器上永久地删除您的数据。在服务停止、终止或取消后，</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">我们</span><span style=\"color: rgb(96, 98, 102);\">没有义务向您返还任何数据。</span></p><p><span style=\"color: rgb(96, 98, 102);\"><br>4.7账号使用规则及限制<br>4.7.1 </span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">通过以下三种方式接受来自您的指令：其一，您在</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">平台或其他可使用本服务的平台通过以您的</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">账号及密码或数字证书等方式登录</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">账号并依照本服务预设流程所修改或确认的指令；其二，您通过您注册时作为该账号名称或者与该账号绑定的专属于您的通讯工具向</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">发送的确认信息；其三，您通过您注册时作为该账号名称或者与该账号名称绑定的其他硬件、终端、软件、代号、编码、代码、其他账号名等有形体或无形体向</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">发送的确认信息。您通过以上三种方式中的任一种向</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">发出指令，都不可撤回或撤销，且成为</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">为您提供电子签名服务的有效指令，您应当对</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">忠实执行上述指令产生的任何结果承担责任。本协议所称绑定，指您的</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">账号与本条上述所称有形体或无形体存在对应的关联关系，这种关联关系使得</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">服务的某些服务功能得以实现，且这种关联关系有时使得这些有形体或无形体能够作为</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">对您的账号的识别和认定依据。<br>4.7.2 </span><strong>您在使用创思助手服务过程中，本协议内容、操作页面上出现的信息提示或创思助手发送到您通讯工具的内容亦是您使用本服务的相关规则，您使用本服务即表示您同意接受本服务的相关规则。您了解并同意创思助手有权单方修改服务的相关规则，而无须征得您的同意，服务规则应以您使用服务时的确定的内容为准 ，您同意并遵守服务规则是您使用创思助手服务的前提。</strong><span style=\"color: rgb(96, 98, 102);\"><br>4.7.3 </span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">会以电子邮件、发送手机短信、APP消息推送、</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">微信公众号信息推送及接受</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">服务的其他平台消息推送</span><span style=\"color: rgb(96, 98, 102);\">等方式通知您</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">服务进展情况以及提示您进行下一步的操作，但</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">我们</span><span style=\"color: rgb(96, 98, 102);\">不保证您能够收到或者及时收到该邮件或短信等，且不对此承担任何后果，因此，在交易过程中您应当及时登录到</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">平台或接受</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">服务的其他平台查看和进行电子签名操作。因您没有及时查看和进行电子签名操作而导致的任何纠纷或损失，</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">不负任何责任。<br></span><span style=\"color: rgb(96, 98, 102); background-color: rgb(255, 255, 255);\">4.7.4 您确认如您代表企</span><span style=\"color: rgb(96, 98, 102);\">业（含其他组织）签署文件的情况下，您向</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">提供其必要的签署信息（包括但不限于签章图形等）已经获得该企业（含其他组织）的合法授权，且您的签署行为获得该企业（含其他组织）的合法授权。您应确保前述授权的完整性、真实性及合法性。您应对因您未能遵守本条约定而发生的任何损失及其他不利后果负责。<br>4.7.5 您实际使用</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">提供的电子签名服务即视为您与您的签署相对方就电子文件的签署形式已经达成合意，并且您认可签署过程中产生的电子数据。</span></p><p><span style=\"color: rgb(96, 98, 102);\">4.7.6 您在使用本服务时应遵守中华人民共和国相关法律法规、您所在国家或地区之法令及相关国际惯例，不将本服务用于任何非法目的，也不以任何非法方式使用本服务，或将本服务用于非</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">许可的其他用途。您不得利用本服务从事侵害他人合法权益之行为，否则</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">有权拒绝提供服务，且您应承担所有相关法律责任，因此导致</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">受损的，您应承担赔偿责任。</span></p><p><span style=\"color: rgb(96, 98, 102);\">4.7.7 您应当知悉，根据《电子签名法》的规定，涉及婚姻、收养、继承等人身关系及涉及停止供水、供热、供气等公用事业服务的电子文件不适用电子签名；法律、行政法规规定的其他不适用电子签名的文件亦不应使用电子签名签署。您有义务自行确认您需签署的文件是否能够使用电子签名，</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">不对您在法律规定的不适用情形中使用电子签名承担任何责任。</span></p><p><span style=\"color: rgb(96, 98, 102);\">4.7.8 您应当知悉，</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">需履行平台管理义务。您认可</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">有权根据具体的法律、法规、政策及环境变化，设置用户准入政策，并基于前述政策决定是否与您订立合同关系。您对此没有异议，并将配合我们提交您的准入审核材料和接受</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">的审核结果。您认可</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">有权了解您使用</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">产品或服务的背景及目的，您应如实提供</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">所需的真实、全面、准确的信息。<br>4.7.9 您理解并同意，</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">不对因下述任一情况导致的任何损害承担赔偿责任，包括但不限于实际损失、可期待利益、商誉、使用数据等方面的损害（无论</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">是否已被告知损害的可能性）：<br>A. </span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">基于合理的单方判断，包含但不限于认为您已经违反本协议的约定，有权冻结您名下的</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">账号，暂停或终止向您提供部分或全部服务。<br>B. </span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">发现异常电子签名及合理怀疑电子签名有违反法律、法规规定时，有权不经通知先行冻结您名下的</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">账号，暂停或终止向您提供部分或全部服务。<br>C. 存在如下情形时，</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">有权冻结您名下的</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">账号，暂停或终止提供部分或全部服务：<br>1）根据法律法规的规定、本协议的约定或有权机关的要求的；<br>2）</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">基于单方面合理判断认为账号操作存在异常时；</span></p><p><span style=\"color: rgb(96, 98, 102);\">3）您遭到他人投诉，且对方已经提供了一定证据的；<br>4）您可能错误地将他人账号进行了身份认证的；</span></p><p><span style=\"color: rgb(96, 98, 102);\">5）</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">履行平台管理义务但您拒不配合提供相关真实完整资料的。<br>如您代表企业（含其他组织）使用账号，或您实际控制着其他账号的，上述条款对您使用或控制的其他账号同样适用。您应当确保您所代表企业（含其他组织）及您所控制的其他账号的所有权人知悉并同意本条款。</span></p><p><span style=\"color: rgb(96, 98, 102);\">4.7.10 如您申请恢复服务、解除账号冻结，您应按</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">要求如实提供相关资料及您的身份证明以及</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">要求的其他信息或文件，以便</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">进行核实。</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">有权依照自行判断来决定是否同意您的申请。您应充分理解您的申请并不必然被允许。您拒绝如实提供相关资料及身份证明的，或未通过</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">审核的，您确认</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">我们</span><span style=\"color: rgb(96, 98, 102);\">有权决定对该账号保持冻结并暂定或终止提供服务。<br><br>五、知识产权</span></p><p><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">平台及服务的所有内容，包括但不限于著作、图片、档案、资讯、资料、网站架构、网站画面的安排、网页设计，均由</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">或</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">关联企业依法拥有其知识产权。非经</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">或</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">关联企业书面同意，任何人不得擅自使用、修改、复制、公开传播、改变、散布、发行或公开发表</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">平台及服务的程序或内容。</span></p><p><span style=\"color: rgb(96, 98, 102);\">六、违约责任及责任限制</span></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102);\">6.1服务不可用</span></p><p><span style=\"color: rgb(96, 98, 102);\">6.1.1 未经身份认证或数字证书被吊销而导致电子签名服务不可用的，</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">不承担任何责任。</span></p><p><span style=\"color: rgb(96, 98, 102);\">6.1.2 由于系统本身问题、相关作业网络连接问题或其他不可抗拒因素，造成本服务无法提供的，</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">我们</span><span style=\"color: rgb(96, 98, 102);\">不承担任何责任。</span></p><p><span style=\"color: rgb(96, 98, 102);\">6.1.3 </span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">服务因下列状况无法正常运作，使您无法使用各项服务时，</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">我们</span><span style=\"color: rgb(96, 98, 102);\">不承担损害赔偿责任，该状况包括但不限于：<br>A. </span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">在本网站公告之系统停机维护期间；<br>B.电信设备出现故障不能进行数据传输的；<br>C.因台风、地震、海啸、洪水、停电、战争、恐怖袭击等不可抗力之因素，造成</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">服务障碍不能执行业务的；<br>D.由于黑客攻击、电信部门技术调整或故障、网站升级等原因而造成的服务中断或者延迟。</span></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102);\">6.2服务终止</span></p><p><span style=\"color: rgb(96, 98, 102);\">6.2.1 如您购买的具体服务含有存储功能的，在该服务到期或终止后，对于您存储在该服务中的数据等任何信息，</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">将根据该服务的服务规则为您保留相应期限。您应承担保留期限内产生的费用（若有），并按时结清费用、完成全部数据的迁移。保留期限届满后，您的前述信息将被删除，</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">我们</span><span style=\"color: rgb(96, 98, 102);\">不对此承担任何责任。</span></p><p><span style=\"color: rgb(96, 98, 102);\">6.2.2 </span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">有权根据自身运营安排，随时调整、终止部分或全部服务（包括但不限于对服务进行下线、迭代、整合等），</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">我们</span><span style=\"color: rgb(96, 98, 102);\">不对此承担任何责任。但是，</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">我们</span><span style=\"color: rgb(96, 98, 102);\">应提前至少30天通知您，以便您做好相关数据的转移备份以及业务调整等，以保护您的合法权益。</span></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102);\">6.3 因您使用</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">服务签署电子文件所产生的交易风险应由您与交易相对方承担。<br><br>6.4 </span><strong>除创思助手与您另达成关于违约责任赔偿的书面约定外，因创思助手电子签名技术瑕疵导致您签署的电子文件被法院、仲裁委生效判决、裁决认定为无效的，我们承担损失赔偿责任，前述赔偿责任最高不超过5万元（本条款对创思助手用户不适用）。</strong></p><p><span style=\"color: rgb(96, 98, 102);\"><br>6.5 在法律允许的情况下，</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">对于由履行本协议引起的任何间接的、惩罚性的、特殊的、派生的损失（包括业务损失、收益损失、利润损失、商誉损失、使用数据或其他经济利益的损失），不论是如何产生的，也不论是由对本协议的违约（包括违反保证）还是由侵权造成的，均不负有任何责任，即使事先已被告知此等损失的可能性。</span></p><p><span style=\"color: rgb(96, 98, 102);\"> </span></p><p><span style=\"color: rgb(96, 98, 102);\">6.6 </span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">仅对本协议中列明的责任承担范围负责。<br><br>七、其他<br><br>7.1本协议之效力、解释、变更、执行与争议解决均适用中华人民共和国法律，没有相关法律规定的，参照通用国际商业惯例和（或）行业惯例。因本协议产生的争议，不论争议金额大小，均提交杭州仲裁委员会适用杭州仲裁委员会仲裁规则项下的简易程序进行仲裁。仲裁裁决为终局的，对各方均有拘束力。<br><br>7.2 本协议中的任何条款无论因何种原因完全或部分无效或不具有执行力的，本协议的其余条款仍应有效并且有约束力。</span></p><p><span style=\"color: rgb(96, 98, 102);\">7.3 您在进行注册或身份认证时提供的任何联系方式均为有效联系方式，</span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">或有关机关通过前述方式向您送达的法律文书一经发出即视为送达。</span></p><p><span style=\"color: rgb(96, 98, 102);\">7.4 </span><span style=\"color: rgb(96, 98, 102); font-family: 宋体;\">创思助手</span><span style=\"color: rgb(96, 98, 102);\">对本服务协议享有最终的解释权。</span></p>";
    /**
     * 拼接CONTENT 使成为完整的html,\"font-family: SimSun;\"
     */
//    private static final String COMPLETE_CONTENT = "<html><head></head><body style=\"font-family: SimSun;\">" + CONTENT + "</body></html>";


    public static File getImgServerUrl(String text) throws Exception {
        String replace = text.replace("Arial", "黑体").replace("宋体","黑体").replace("font-family: 黑体; &nbsp;","font-family: 黑体;\"> &nbsp;");
        String string = content2Html(replace);
        return html2Pdf(string);
    }

    public static File getImgServerUrlApose(String text,String filePath) throws Exception {
        String string = content2Html(text);
        return html3Pdf(string,filePath);
    }

    /**
     * html转换成pdf文件
     *
     * @param htmlContent
     * @throws Exception
     */
    public static File html2Pdf(String htmlContent) throws Exception {
        //File dir = new File("./temporary");
        File dir = new File(ChuangSiConfig.getProfile()+"/contract");
        if (!dir.exists()) {
            dir.mkdir();
        }
        File pdfFile = new File(dir + "/合同" + "-" + System.currentTimeMillis() + ".pdf");
        //1 打开文件流
        com.itextpdf.text.Document document = new com.itextpdf.text.Document();
        FileOutputStream fos = new FileOutputStream(pdfFile);
        InputStream is = new ByteArrayInputStream(htmlContent.getBytes(Charset.forName("UTF-8")));
        PdfWriter writer = null;
        try {
            writer = PdfWriter.getInstance(document, fos);
            //3 打开文档
            document.open();
            XMLWorkerHelper.getInstance().parseXHtml(writer, document, is, Charset.forName("UTF-8"));
        } catch (DocumentException | IOException e) {
            throw new RuntimeException("转换pdf失败");
        } finally {
            if (null != writer) {
                writer.flush();
            }
            //5 关闭文档
            document.close();
            fos.close();
            is.close();
            writer.close();
            return pdfFile;
        }
    }

    /**
     * 获取html
     *
     * @return
     */
    public static String content2Html(String writeAble) {
        String content = "<html><head></head><body style=\"font-family: SimSun;\">" + writeAble + "</body></html>";
        content = content.replace("<br>", "<br/>");
        return content;
    }

    public static MultipartFile getMultipartFile(File file) {
        FileItem item = new DiskFileItemFactory().createItem("file"
                , MediaType.MULTIPART_FORM_DATA_VALUE
                , true
                , file.getName());
        try (InputStream input = new FileInputStream(file);
             OutputStream os = item.getOutputStream()) {
            // 流转移
            IOUtils.copy(input, os);
        } catch (Exception e) {
            throw new IllegalArgumentException("Invalid file: " + e, e);
        }

        return new CommonsMultipartFile(item);
    }




    /**
     * html转换成pdf文件
     *
     * @param content
     * @throws Exception
     */
    public static File html3Pdf(String content,String filePath) throws Exception {
        content = content2Html(content);
        com.aspose.words.Document nodes = new com.aspose.words.Document();
        DocumentBuilder builder = new DocumentBuilder(nodes);
        builder.getPageSetup().setPaperSize(PaperSize.A4);
        // 获取文档的PageSetup对象
        PageSetup pageSetup = builder.getPageSetup();
        // 设置左右页边距为20磅
        pageSetup.setLeftMargin(40);
        pageSetup.setRightMargin(40);
        // 设置上下页边距为30磅
        pageSetup.setTopMargin(40);
        pageSetup.setBottomMargin(40);
        pageSetup.setOrientation(Orientation.PORTRAIT);
        pageSetup.setBorderAlwaysInFront(true);

        builder.insertHtml(content);
        NodeCollection<Node> tables = nodes.getChildNodes(NodeType.TABLE, true);
        for (Node tableNode : tables) {
            Table table = (Table) tableNode;
            for (Row row:(Iterable<Row>)table.getChildNodes(NodeType.ROW, true)){
                for (Cell cell:(Iterable<Cell>)row.getChildNodes(NodeType.CELL, true)){
                    //设置单元格上下边框
                    cell.getCellFormat().getBorders().getBottom().setLineStyle(LineStyle.SINGLE);
                    cell.getCellFormat().getBorders().getTop().setLineStyle(LineStyle.SINGLE);
                    cell.getCellFormat().getBorders().getLeft().setLineStyle(LineStyle.SINGLE);
                    cell.getCellFormat().getBorders().getRight().setLineStyle(LineStyle.SINGLE);
                }
            }
            fitTableToPageWidth(table);
        }
        //String fileName = "/chuangyuan/nci/contract/合同-" + System.currentTimeMillis() + ".pdf";
        nodes.save(filePath, SaveFormat.PDF);
        return new File(filePath);
    }


    public static void fitTableToPageWidth(Table table) {
        Section section = (Section) table.getAncestor(NodeType.SECTION);
        double tableWidth = 0;
        for (Row row : table.getRows()) {
            double rowWidth = 0;
            for (Cell cell : row.getCells()) {
                rowWidth += cell.getCellFormat().getWidth();
                cell.getCellFormat().setFitText(true);
            }
            if (rowWidth > tableWidth) {
                tableWidth = rowWidth;
            }
        }
        double pageWidth = section.getPageSetup().getPageWidth() - (section.getPageSetup().getLeftMargin() + section.getPageSetup().getRightMargin());
        for(Row row : table.getRows()) {
            for(Cell cell : row.getCells()) {
                double cellRatio = cell.getCellFormat().getWidth() / tableWidth;
                cell.getCellFormat().setWidth(cellRatio * pageWidth);
            }
        }
    }


    public static void addSeal(File file, String sealUrl) throws IOException {
        log.info("画章开始");
        SealPositionDto sealPositionDto = getSealPositionDto(file);
        log.info("获取到印章的位置：{}",sealPositionDto.toString());
        if(sealPositionDto.getPage() == 0){
            throw new ServiceException("未找到甲方签章位置，需要在合同上标注：甲方签名");
        }
        // 输出的 PDF 文件路径
        String outputPdfPath = file.getPath();
        log.info("输出的 PDF 文件路径：{}",outputPdfPath);
        String tempPdfPath = "PDF"+System.currentTimeMillis()+".pdf";
        log.info("临时文件名字：{}",outputPdfPath);
        // 图片绘制的 x 坐标
        float x = sealPositionDto.getX();
        // 图片绘制的 y 坐标
        float y = sealPositionDto.getY();
        // 设置图片的透明度，取值范围 0.0（完全透明）到 1.0（完全不透明）
        float transparency = 0.7f;
        try {
            // 读取现有 PDF 文档
            PdfReader reader = new PdfReader(file.getPath());
            // 创建 PdfStamper 对象，用于修改现有 PDF 文档
            PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(tempPdfPath));
            // 获取指定页面的 PdfContentByte 对象，用于在该页面上进行绘制操作
            //文字下
            //PdfContentByte contentByte = stamper.getUnderContent(sealPositionDto.getPage());
            PdfContentByte contentByte = stamper.getOverContent(sealPositionDto.getPage());
            // 加载图片
            //Image image = Image.getInstance(ChuangSiConfig.getUploadPath()+seal.getSealPic());
            log.info("章的地址：{}",sealUrl);
            URL url = new URL(sealUrl);
            Image image = Image.getInstance(url);
            //这是949像素的才缩小13.5倍
            image.scalePercent(13.5f);
            y = y - (image.getHeight()*0.135F*1F/4F);
            // 设置图片在 PDF 上的绘制位置
            image.setAbsolutePosition(x, y);
            // 设置透明度
            PdfGState gState = new PdfGState();
            gState.setFillOpacity(transparency);
            gState.setStrokeOpacity(transparency);
            contentByte.setGState(gState);
            // 将图片添加到 PdfContentByte 中
            contentByte.addImage(image);
            // 关闭 stamper 和 reader
            stamper.close();
            reader.close();
            // 删除原文件
            File originalFile = new File(outputPdfPath);
            if (originalFile.exists()) {
                originalFile.delete();
            }
            // 将临时文件重命名为原文件
            File tempFile = new File(tempPdfPath);
            if (tempFile.exists()) {
                tempFile.renameTo(originalFile);
            }
        } catch (DocumentException | IOException e) {
            e.printStackTrace();
        }
        log.info("画章完成");

    };



    public static SealPositionDto getSealPositionDto(File file) throws IOException {
        SealPositionDto sealPositionDto = new SealPositionDto();
        sealPositionDto.setPage(0);
        // 加载 PDF 文件
        PdfReader reader = null;
        try {
            reader = new PdfReader(file.getPath());
        }catch (Exception e){
            e.printStackTrace();
            throw new ServiceException("未找到PDF文件，添加章失败");
        }
        // 目标文本
        String targetText = "甲方签名";
        PositionTextExtractionStrategy strategy = new PositionTextExtractionStrategy(targetText);
        // 遍历每一页
        for (int pageNum = 1; pageNum <= reader.getNumberOfPages(); pageNum++) {
            // 自定义文本解析策略
            // 提取页面文本并触发位置捕获
            PdfTextExtractor.getTextFromPage(reader, pageNum, strategy);
            // 输出结果
            List<Rectangle> positions = strategy.getFoundPositions();
            if (!positions.isEmpty()) {
                sealPositionDto.setPage(pageNum);
                for (Rectangle rect : positions) {
                    sealPositionDto.setX(rect.getX());
                    sealPositionDto.setY(rect.getY());
                }
            }
        }
        reader.close();
        return sealPositionDto;
    }


    // 自定义文本解析策略（核心逻辑）
    static class PositionTextExtractionStrategy implements TextExtractionStrategy {
        private final String targetText;
        private final List<Rectangle> foundPositions = new ArrayList<>();
        private StringBuilder currentText = new StringBuilder();

        public PositionTextExtractionStrategy(String targetText) {
            this.targetText = targetText;
        }

        @Override
        public void renderText(TextRenderInfo renderInfo) {
            // 获取当前文本块的文本和位置
            String chunkText = renderInfo.getText();
            LineSegment baseline = renderInfo.getBaseline();
            Vector start = baseline.getStartPoint();
            Vector end = baseline.getEndPoint();

            // 记录文本块的位置
            Rectangle rect = new Rectangle(
                    start.get(0),  // X坐标
                    start.get(1),  // Y坐标（左下角原点）
                    end.get(0) - start.get(0),  // 宽度
                    renderInfo.getAscentLine().getEndPoint().get(1) - start.get(1)  // 高度
            );

            // 检查是否包含目标文本
            currentText.append(chunkText);
            if (currentText.toString().contains(targetText)) {
                foundPositions.add(rect);
                currentText.setLength(0); // 重置当前文本缓存
            }
        }

        @Override
        public void beginTextBlock() { /* 无需实现 */ }

        @Override
        public void endTextBlock() { /* 无需实现 */ }

        @Override
        public void renderImage(ImageRenderInfo renderInfo) { /* 忽略图片 */ }

        @Override
        public String getResultantText() {
            return ""; // 不需要返回完整文本
        }

        public List<Rectangle> getFoundPositions() {
            return foundPositions;
        }
    }

    // 自定义 Rectangle 类（iText 5.5 没有内置 Rectangle 的坐标类）
    static class Rectangle {
        private final float x, y, width, height;

        public Rectangle(float x, float y, float width, float height) {
            this.x = x;
            this.y = y;
            this.width = width;
            this.height = height;
        }

        public float getX() { return x; }
        public float getY() { return y; }
        public float getWidth() { return width; }
        public float getHeight() { return height; }
    }
}
